package com.xintai.hetong.service.impl;

import java.util.List;

import com.xintai.common.core.domain.AjaxResult;
import com.xintai.common.utils.SecurityUtils;
import com.xintai.common.utils.file.FileUtils;
import com.xintai.hetong.domain.ErpHetong;
import com.xintai.hetong.domain.ErpHetongFile;
import com.xintai.hetong.mapper.ErpHetongFileMapper;
import com.xintai.hetong.mapper.ErpHetongItemMapper;
import com.xintai.hetong.mapper.ErpHetongMapper;
import com.xintai.hetong.service.IErpHetongService;
import com.xintai.utils.MyGetCode;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

/**
 * 合同管理Service业务层处理
 *
 * @author xintai
 * @date 2021-01-27
 */
@Service
public class ErpHetongServiceImpl implements IErpHetongService
{
    @Autowired
    private ErpHetongMapper erpHetongMapper;

    @Autowired
    private ErpHetongItemMapper erpHetongItemMapper;

    @Autowired
    private ErpHetongFileMapper erpHetongFileMapper;

    /**
     * 查询合同管理
     *
     * @param htId 合同管理ID
     * @return 合同管理
     */
    @Override
    public ErpHetong selectErpHetongById(String htId)
    {
        return erpHetongMapper.selectErpHetongById(htId);
    }

    /**
     * 查询合同管理列表
     *
     * @param erpHetong 合同管理
     * @return 合同管理
     */
    @Override
    public List<ErpHetong> selectErpHetongList(ErpHetong erpHetong)
    {
        return erpHetongMapper.selectErpHetongList(erpHetong);
    }

    /**
     * 新增合同管理
     *
     * @param erpHetong 合同管理
     * @return 结果
     */
    @Override
    @Transactional
    public int insertErpHetong(ErpHetong erpHetong)
    {
        //设置合同类型
        erpHetong.setHtType(0L);
        //设置用户ID
        erpHetong.setUserId(SecurityUtils.getLoginUser().getUser().getUserId());
        //设置合同编号
        erpHetong.setHtCode(MyGetCode.myGetCode(1, erpHetong.getUserId().intValue()));
        //塞入合同主表
        int updateRow = erpHetongMapper.insertErpHetong(erpHetong);

        //塞入合同明细
        if (erpHetong.getErpHetongItemList() != null){
            for (int i = 0; i < erpHetong.getErpHetongItemList().size(); i ++){
                //设置文件的上级ID
                erpHetong.getErpHetongItemList().get(i).setHtParentid(erpHetong.getHtId());
                //塞入明细
                erpHetongItemMapper.insertErpHetongItem(erpHetong.getErpHetongItemList().get(i));
            }
        }else
        {
            return 0;
        }
        //塞入上传文件
        if(erpHetong.getErpHetongFileList()!=null) {
            for (int i = 0; i < erpHetong.getErpHetongFileList().size(); i++) {
                //移动文件
                FileUtils.moveFile(erpHetong.getErpHetongFileList().get(i).getHtFilepath());
                //设置文件的上级ID
                erpHetong.getErpHetongFileList().get(i).setHtParentid(erpHetong.getHtId());
                //塞入文件
                erpHetongFileMapper.insertErpHetongFile(erpHetong.getErpHetongFileList().get(i));
            }
        }
        return updateRow;
    }

    /**
     * 修改合同管理
     *
     * @param erpHetong 合同管理
     * @return 结果
     */
    @Override
    public int updateErpHetong(ErpHetong erpHetong)
    {
        return erpHetongMapper.updateErpHetong(erpHetong);
    }

    /**
     * 批量删除合同管理
     *
     * @param htIds 需要删除的合同管理ID
     * @return 结果
     */
    @Override
    public int deleteErpHetongByIds(String[] htIds)
    {
        return erpHetongMapper.deleteErpHetongByIds(htIds);
    }

    /**
     * 删除合同管理信息
     *
     * @param htId 合同管理ID
     * @return 结果
     */
    @Override
    public int deleteErpHetongById(String htId)
    {
        return erpHetongMapper.deleteErpHetongById(htId);
    }
}